package com.hg.util.common;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class DataValidateUtil {
	
	/*public static void main(String[] args) {
		String str="123|456|789|1111";
		Txt txt=new Txt(str);
		Txt str2=txt.restr("|", ",");
		String[] arry=txt.split(str, "|");
		for(int i=0;i<arry.length;i++)
		{
			System.out.println(arry[i]);
		}
		System.out.println(str2.toString());
	}*/
	/*public static void main(String[] args)
	{
		DataValidateUtil dvu=new DataValidateUtil();
		System.out.println(dvu.isSex("男"));
	}*/
	
	/** 
	* 是否是中文 
	* @param value 
	*/ 
	public static boolean isChinese(String str)
	{ 
		String regex="^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$"; 
		return match(regex, str);
	} 
	/** 
	* 是否是ACSII字符 
	* @param value 
	*/ 
	public static boolean isAscii(String str)
	{ 
		String regex="^[\\x00-\\xFF]+$"; 
		return match(regex, str);
	} 
	/** 
	* 是否是邮编 
	* @param value 
	*/ 
	public static boolean isZipcode(String str)
	{ 
		String regex="^\\d{6}$"; 
		return match(regex, str); 
	} 
	
	
	/**
	 * 验证性别
	 * @param str
	 * @return
	 */
	public static boolean isSex(String str)
	{
		if(-1!="男女".indexOf(str))
		{
			return true;
		}
		return false;
	}
	
	
	/**
	 * 验证字符串的长度小于
	 * @param str	验证的字符串
	 * @param length	长度限制
	 * @return
	 */
	public static boolean isNotOverLength(String str,int length)
	{
		return str.length()>0 && str.length()<length;
	}
	
	/**
	 * 验证字符串的长度大于,不小于
	 * @param str	验证的字符串
	 * @param length	长度限制
	 * @return
	 */
	public static boolean isOverLength(String str,int length)
	{
		return str.length()>=length;
	}

	
	
	
	/** 
	* 是否是非空 
	* @param value 
	*/ 
	public static boolean isNotempty(String str)
	{ 
		String regex="^\\S+$"; 
		return match(regex, str); 
	} 
	/** 
	* 是否是图片 
	* @param value 
	*/ 
	public static boolean isPicture(String str)
	{ 
		String regex="(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$"; 
		return match(regex, str); 
	} 
	/** 
	* 是否是压缩文件 
	* @param value 
	*/ 
	public static boolean isRar(String str)
	{ 
		String regex="(.*)\\.(rar|zip|7zip|tgz)$"; 
		return match(regex, str); 
	} 
	/** 
	* 是否是日期 
	* @param value 
	*/ 
	public static boolean isDate(String str)
	{ 
		String regex="^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$"; 
		return match(regex, str); 
	}
	/** 
	* 是否是QQ号码 
	* @param value 
	*/ 
	public static boolean isQq(String str)
	{ 
		String regex="^[1-9]*[1-9][0-9]*$"; 
		return isBetweenLength(str,5,11) & match(regex, str);  
	}
	/**
	 * 长度在什么长度之间
	 * @param str
	 * @param begin
	 * @param end
	 * @return
	 */
	public static boolean isBetweenLength(String str,int begin,int end)
	{
		return str.length()>=begin && str.length()<=end;
	}
	/** 
	 * 不是手机号码
	* 是否是电话号码的函数(包括验证国内区号,国际区号,分机号) 
	* @param value 
	*/ 
	public static boolean isTel(String str)
	{ 
		String regex="^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{3,}))?$"; 
		return match(regex, str);  
	} 
	/** 
	* 用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串 
	* @param value 
	*/ 
	public static boolean isUsername(String str)
	{ 
		String regex="^\\w+$";
		return match(regex, str); 
	} 
	
	
	/** 
	* 是否是邮件 
	* @param value 
	*/ 
	public static boolean isEmail(String str)
	{ 
		String regex="^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$"; 
		return match(regex, str); 
	} 
	
	
	/** 
	* 是否是手机 
	* @param value 
	*/ 
	public static boolean isMobile(String str)
	{ 
		String regex="^(13|14|15|16|17|18)[0-9]{9}$";
		
		return match(regex, str); 
	} 
	public static boolean isMobile_qy(String str)
	{ 
		String regex="^(13|15)[0-9]{9}$";
		return match(regex, str); 
	} 
	
	
	//======================================================================================
	
	
	
	/** 
	* 是否是整数 
	* @param value 
	*/ 
	public static boolean isIntege(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//caozuofu.html" target="_blank">操作符表达式 
	boolean b=false; 
	p=p.compile("^-?[1-9]\\d*$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是正整数 
	* @param value 
	*/ 
	public static boolean isIntege1(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^[1-9]\\d*$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是负整数 
	* @param value 
	*/ 
	public static boolean isIntege2(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^-[1-9]\\d*$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是数字 
	* @param value 
	*/ 
	public static boolean isNum(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^([+-]?)\\d*\\.?\\d+$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是正数（正整数 + 0） 
	* @param value 
	*/ 
	public static boolean isNum1(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^[1-9]\\d*|0$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是负数（负整数 + 0） 
	* @param value 
	*/ 
	public static boolean isNum2(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^-[1-9]\\d*|0$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是浮点数 
	* @param value 
	*/ 
	public static boolean isDecmal(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^([+-]?)\\d*\\.\\d+$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是正浮点数 
	* @param value 
	*/ 
	public static boolean isDecmal1(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是负浮点数 
	* @param value 
	*/ 
	public static boolean isDecmal2(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是浮点数 
	* @param value 
	*/ 
	public static boolean isDecmal3(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是非负浮点数（正浮点数 + 0） 
	* @param value 
	*/ 
	public static boolean isDecmal4(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是非正浮点数（负浮点数 + 0） 
	* @param value 
	*/ 
	public static boolean isDecmal5(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	
	/** 
	* 是否是颜色 
	* @param value 
	*/ 
	public static boolean isColor(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^[a-fA-F0-9]{6}$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是url 
	* @param value 
	*/ 
	public static boolean isUrl(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	}
	
	/** 
	* 是否是ip地址 
	* @param value 
	*/ 
	public static boolean isIp(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	
	/** 
	* 是否是字母 
	* @param value 
	*/ 
	public static boolean isLetter(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^[A-Za-z]+$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是大写字母 
	* @param value 
	*/ 
	public static boolean isLetter_u(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^[A-Z]+$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是大写字母 
	* @param value 
	*/ 
	public static boolean isLetter_l(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^[a-z]+$"); 
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	/** 
	* 是否是价格 
	* @param value 
	*/ 
	public static boolean isPrice(String value){ 
	Pattern p=null;//正则表达式 
	Matcher m=null;//操作符表达式 
	boolean b=false; 
	p=p.compile("^([1-9]{1}[0-9]{0,}(\\.[0-9]{0,2})?|0(\\.[0-9]{0,2})?|\\.[0-9]{1,2})$");
	m=p.matcher(value); 
	b=m.matches(); 
	return b; 
	} 
	
	
	
	
	
	
	
	
	
	
	//=============================================================================================
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	/**
	* @param regex
	*            正则表达式字符串
	* @param str
	*            要匹配的字符串
	* @return 如果str 符合 regex的正则表达式格式,返回true, 否则返回 false;
	*/
	private static boolean match(String regex, String str) 
	{
		
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(str);
		
		return matcher.matches();
	}

}
